Visualforce পেজে SOQL এবং DML ব্যবহার

Computer Programming - এপেক্স (Apex) Apex এবং Visualforce Integration (Apex and Visualforce Integration) |
203
203

Visualforce পেজে SOQL এবং DML ব্যবহার হলো Apex ক্লাসের মাধ্যমে Salesforce ডেটাবেস থেকে ডেটা পুনরুদ্ধার এবং পরিবর্তন করার পদ্ধতি। Visualforce পেজে SOQL এবং DML ব্যবহার করা হয় Apex ক্লাসের মধ্যে, যা ডেটা ফিল্টারিং, ফিল্ড আপডেট, নতুন রেকর্ড তৈরি, অথবা রেকর্ড মুছে ফেলার জন্য সহায়ক। তবে এটি করতে গিয়ে গভর্নর লিমিট মেনে চলা গুরুত্বপূর্ণ, যাতে কোডের কার্যকারিতা ও স্থায়িত্ব বজায় থাকে।


SOQL এবং DML কীভাবে Visualforce পেজে ব্যবহার করবেন

Visualforce পেজে SOQL এবং DML সরাসরি ব্যবহার করা হয় না; বরং একটি Custom Controller বা Controller Extension-এর মাধ্যমে SOQL এবং DML অপারেশন করা হয়। SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা ফিল্টার করা হয়, এবং DML অপারেশন ব্যবহার করে সেই ডেটায় পরিবর্তন আনা হয়।


SOQL ব্যবহার করে Visualforce পেজে ডেটা প্রদর্শন

SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার করা যায় এবং Visualforce পেজে তা প্রদর্শন করা হয়। SOQL ব্যবহার করে সাধারণত কাস্টম লজিকের মাধ্যমে ডেটা ফিল্টার করা হয়।

উদাহরণ: Visualforce পেজে SOQL ব্যবহার

Apex Class (Custom Controller)

public class AccountController {
    public List<Account> accountList { get; set; }

    public AccountController() {
        accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account List</h1>
    <apex:pageBlock title="Accounts">
        <apex:pageBlockTable value="{!accountList}" var="acc">
            <apex:column value="{!acc.Name}" headerValue="Account Name"/>
            <apex:column value="{!acc.Industry}" headerValue="Industry"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:page>
  • SOQL Query in Constructor: Custom Controller-এ accountList ফিল্ডে SOQL ব্যবহার করে Account রেকর্ডগুলো পুনরুদ্ধার করা হয়েছে।
  • Data Display on Visualforce Page: Visualforce পেজে Account নাম এবং Industry প্রদর্শনের জন্য apex:pageBlockTable ব্যবহার করা হয়েছে।

DML ব্যবহার করে Visualforce পেজে ডেটা আপডেট

DML অপারেশন ব্যবহার করে Visualforce পেজে ডেটা আপডেট, নতুন রেকর্ড তৈরি বা মুছে ফেলা যায়। সাধারণত commandButton বা commandLink এর মাধ্যমে DML অপারেশন ট্রিগার করা হয়।

উদাহরণ: Visualforce পেজে DML ব্যবহার

Apex Class (Custom Controller)

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = new Account();
    }

    public void saveAccount() {
        insert acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Create New Account</h1>
    <apex:form>
        <apex:inputField value="{!acc.Name}" label="Account Name"/>
        <apex:inputField value="{!acc.Industry}" label="Industry"/>

        <apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmationMessage"/>
        <apex:outputPanel id="confirmationMessage">
            <apex:outputText value="Account has been saved successfully!" rendered="{!NOT(ISNULL(acc.Id))}"/>
        </apex:outputPanel>
    </apex:form>
</apex:page>
  • DML Operation (Insert): Custom Controller-এ saveAccount মেথড ব্যবহার করে DML insert অপারেশন করা হয়েছে, যা নতুন Account রেকর্ড তৈরি করে।
  • CommandButton for Save: Visualforce পেজে commandButton ব্যবহার করে saveAccount মেথড কল করা হয়েছে, যা রেকর্ড সেভ করবে এবং সফল হলে একটি কনফার্মেশন মেসেজ প্রদর্শন করবে।

SOQL এবং DML এর ভালো অনুশীলন

  1. Governor Limits মেনে চলুন: SOQL এবং DML অপারেশন সীমিত করুন এবং Loop এর ভিতরে SOQL বা DML এড়িয়ে চলুন।
  2. Bulk SOQL এবং DML ব্যবহার করুন: একাধিক রেকর্ড নিয়ে কাজ করার সময় Bulk SOQL এবং DML ব্যবহার করুন।
  3. Exception Handling নিশ্চিত করুন: DML অপারেশনে Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন।
  4. SOQL Query Optimization: SOQL কুয়েরিতে শুধু প্রয়োজনীয় ফিল্ড সিলেক্ট করুন এবং LIMIT ব্যবহার করুন।
  5. Test Coverage নিশ্চিত করুন: SOQL এবং DML এর জন্য আলাদা টেস্ট মেথড লিখুন এবং ৭৫% কোড কাভারেজ নিশ্চিত করুন।

SOQL এবং DML এর উদাহরণ: টেস্ট ক্লাস সহ

Apex Class: Custom Controller with SOQL and DML

public class AccountController {
    public List<Account> accountList { get; set; }
    public Account acc { get; set; }

    public AccountController() {
        accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
        acc = new Account();
    }

    public void saveAccount() {
        insert acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account List and Creation</h1>

    <apex:pageBlock title="Create New Account">
        <apex:form>
            <apex:inputField value="{!acc.Name}" label="Account Name"/>
            <apex:inputField value="{!acc.Industry}" label="Industry"/>
            <apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmation"/>
            <apex:outputPanel id="confirmation">
                <apex:outputText value="Account saved!" rendered="{!NOT(ISNULL(acc.Id))}"/>
            </apex:outputPanel>
        </apex:form>
    </apex:pageBlock>

    <apex:pageBlock title="Account List">
        <apex:pageBlockTable value="{!accountList}" var="acc">
            <apex:column value="{!acc.Name}" headerValue="Account Name"/>
            <apex:column value="{!acc.Industry}" headerValue="Industry"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:page>

Test Class: SOQL এবং DML সহ

@isTest
public class AccountControllerTest {
    @isTest
    static void testSOQLQuery() {
        Account acc1 = new Account(Name = 'Test Account 1', Industry = 'Technology');
        insert acc1;

        AccountController controller = new AccountController();
        System.assertNotEquals(0, controller.accountList.size(), 'Account list should not be empty');
    }

    @isTest
    static void testDMLInsert() {
        AccountController controller = new AccountController();
        controller.acc.Name = 'Test Account 2';
        controller.acc.Industry = 'Healthcare';
        
        Test.startTest();
        controller.saveAccount();
        Test.stopTest();

        Account insertedAcc = [SELECT Id, Name, Industry FROM Account WHERE Id = :controller.acc.Id];
        System.assertEquals('Test Account 2', insertedAcc.Name, 'Account name should match');
        System.assertEquals('Healthcare', insertedAcc.Industry, 'Industry should match');
    }
}
  • testSOQLQuery: SOQL ব্যবহার করে accountList এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে।
  • testDMLInsert: DML insert অপারেশন টেস্ট করার জন্য টেস্ট মেথড তৈরি করা হয়েছে, যা নতুন Account রেকর্ড তৈরি এবং ভ্যালিডেশন করে।

সারসংক্ষেপ

Visualforce পেজে SOQL এবং DML ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার ও পরিবর্তন করার মাধ্যমে Apex কোডের কার্যক্ষমতা এবং ডেটা প্রক্রিয়াকরণ সক্ষমতা বৃদ্ধি করা যায়। Custom Controller এবং Controller Extension ব্যবহার করে SOQL ও DML অপারেশন প্রয়োগ করতে হলে গভর্নর লিমিট মেনে চলা, টেস্ট ক্লাস ও টেস্ট ডেটা তৈরি করা এবং সঠিক Exception Handling নিশ্চিত করা গুরুত্বপূর্ণ।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion